package cn.b.sky.mes.mm.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import cn.b.sky.mes.mm.model.InventoryAlarmRecipient;
import cn.b.sky.mes.mm.model.Tree;
import cn.b.sky.mes.mm.model.condition.InventoryAlarmRecipientCondition;
import cn.b.sky.user.service.model.User;

/**
 * 
 * <strong>Title : InventoryAlarmRecipientDao.java<br></strong>
 * <strong>Package : cn.b.sky.mes.mm.dao<br></strong>
 * <strong>Description : </strong>库存报警接收人持久层<br> 
 * <strong>Create on : 2016年3月1日 下午1:58:24<br></strong>
 * <p> 
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人    |    修改日期    |    修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface InventoryAlarmRecipientDao {

  /**
   * 
   * <strong>Title : selectInventoryAlarmRecipientListByCondition<br></strong>
   * <strong>Description : </strong>根据查询条件查询接收人集合<br> 
   * <strong>Create on : 2016年3月1日 下午1:51:55<br></strong>
   * <p>
   * @param condition
   * @return
   * List<InventoryAlarmRecipient>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人  | 修改日期  | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<InventoryAlarmRecipient> selectInventoryAlarmRecipientListByCondition(InventoryAlarmRecipientCondition condition);

  /**
   * 
   * <strong>Title : selectInventoryAlarmRecipientCountByCondition<br></strong>
   * <strong>Description : </strong>根据查询条件查询接收人集合数量<br> 
   * <strong>Create on : 2016年3月1日 下午1:52:05<br></strong>
   * <p>
   * @param condition
   * @return
   * int
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人  | 修改日期  | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int selectInventoryAlarmRecipientCountByCondition(InventoryAlarmRecipientCondition condition);

  /**
   * 
   * <strong>Title : getInventoryAlarmRecipientById<br></strong>
   * <strong>Description : </strong>根据id查询接收人信息<br> 
   * <strong>Create on : 2016年3月3日 上午9:06:10<br></strong>
   * <p>
   * @param id
   * @return
   * InventoryAlarmRecipient
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  InventoryAlarmRecipient getInventoryAlarmRecipientById(Long id);

  /**
   * 
   * <strong>Title : getInventoryAlarmRecipient<br></strong>
   * <strong>Description : </strong>查询接收人信息<br> 
   * <strong>Create on : 2016年3月3日 下午6:40:45<br></strong>
   * <p>
   * @param siteCode
   * @param userCode
   * @param storageLocationCode
   * @param materialCode
   * @param hasWarehouse
   * @param hasMaterialType
   * @return
   * List<InventoryAlarmRecipient>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<InventoryAlarmRecipient> getInventoryAlarmRecipient(@Param("siteCode") String siteCode,
      @Param("userCode") String userCode, @Param("storageLocationCode") String storageLocationCode,
      @Param("materialCode") String materialCode, @Param("hasWarehouse") boolean hasWarehouse,
      @Param("hasMaterialType") boolean hasMaterialType);

  /**
   * 
   * <strong>Title : insertInventoryAlarmRecipient<br></strong>
   * <strong>Description : </strong>保存接收人信息<br> 
   * <strong>Create on : 2016年3月1日 下午1:55:20<br></strong>
   * <p>
   * @param recipient
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人  | 修改日期  | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertInventoryAlarmRecipient(InventoryAlarmRecipient recipient);

  /**
   * 
   * <strong>Title : updateInventoryAlarmRecipient<br></strong>
   * <strong>Description : </strong>更新接收人信息<br> 
   * <strong>Create on : 2016年3月1日 下午3:09:50<br></strong>
   * <p>
   * @param recipient
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateInventoryAlarmRecipient(InventoryAlarmRecipient recipient);

  /**
   * 
   * <strong>Title : deleteInventoryAlarmRecipientById<br></strong>
   * <strong>Description : </strong>删除接收人信息<br> 
   * <strong>Create on : 2016年3月2日 下午8:25:57<br></strong>
   * <p>
   * @param id
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleteInventoryAlarmRecipientById(Long id);

  /**
   * 
   * <strong>Title : deleteInventoryAlarmRecipient<br></strong>
   * <strong>Description : </strong>删除接收人信息<br> 
   * <strong>Create on : 2016年3月3日 下午6:41:38<br></strong>
   * <p>
   * @param siteCode
   * @param userCode
   * @param storageLocationCode
   * @param materialCode
   * @param hasWarehouse
   * @param hasMaterialType
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleteInventoryAlarmRecipient(@Param("siteCode") String siteCode, @Param("userCode") String userCode,
      @Param("storageLocationCode") String storageLocationCode, @Param("materialCode") String materialCode,
      @Param("hasWarehouse") boolean hasWarehouse, @Param("hasMaterialType") boolean hasMaterialType);

  /**
   * 
   * <strong>Title : selectMaterialTypeTree<br></strong>
   * <strong>Description : </strong>@方法注释说明写在此处@<br> 
   * <strong>Create on : 2016年3月2日 下午2:36:26<br></strong>
   * <p>
   * @param siteCode
   * @return
   * Tree
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Tree> selectMaterialTypeTrees(String siteCode);

  /**
   * 
   * <strong>Title : selectWarehouseTree<br></strong>
   * <strong>Description : </strong>@方法注释说明写在此处@<br> 
   * <strong>Create on : 2016年3月2日 下午2:36:31<br></strong>
   * <p>
   * @param siteCode
   * @return
   * Tree
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Tree> selectWarehouseTrees(String siteCode);

  /**
   * 
   * <strong>Title : selectAlarmUsers<br></strong>
   * <strong>Description : </strong>查询报警接收人<br> 
   * <strong>Create on : 2016-3-7 上午10:42:35<br></strong>
   * <p>
   * @param InventoryAlarmRecipient
   * @return
   * List<User>
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<User> selectAlarmUsers(InventoryAlarmRecipient inventoryAlarmRecipient);

}
